﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Mimoza.Common;

namespace Mimoza.PluginLayer
{
    /// <summary>
    /// Result of executing policy
    /// Plugin should put result by PluginResultStore.PutResult
    /// </summary>
    public class PluginResult
    {
        public bool NeedToReboot = false;
    }

    /// <summary>
    /// Interface of plugin. Uses for execute plugin setting (policy) on host side.	
    /// For multiple policy plugin should can work with dynamic array of policy.
    /// </summary>
    public interface IExecutePlugin
    {
        /// <summary>
        /// Returns Id of plugin.
        /// </summary>        
        string PluginId { get; }

        /// <summary>
        /// Add new policy.
        /// </summary>        
        void Add(Mimoza.ObjectLayer.Policy policy);

        /// <summary>
        /// Remove already applied policy.
        /// </summary>
        void Remove(Mimoza.ObjectLayer.Policy policy);

        /// <summary>
        /// Update already applied policy.
        /// </summary>
        void Update(Mimoza.ObjectLayer.Policy policy);
    }
}
